/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:lenovo
 * Date:2024-04-30
 * Time:10:34
 */
/*public class Test1 {
    public static int getCount1(int num){
        int count=0;
        while(num!=0){
            num=num&(num-1);
            count++;
        }
        return count;
    }
    public static int getCount2(int num){
        int count=0;
        while(num!=0){
            count+=num&1;
            num>>=1;
        }
        return count;
    }
    public static int max2(int a,int b){
        return a>b?a:b;
    }
    public static int max3(int a,int b,int c){
        int m=max2(a,b);
        return max2(m,c);
    }

    public static int sum(int a,int b){
        return a+b;
    }
    public static double sum(double a,double b,double c){
        return a+b+c;
    }

    public static int max(int a,int b){
        return a>b?a:b;
    }

    public static double max(double a,double b){
        return a>b?a:b;
    }

    public static double max(double a,double b,double c){
        return max(a,b)>c?max(a,b):c;
    }



    public static void main4(String[] args) {
        //在同一个类中定义多个方法：要求不仅可以求2个整数的最大值，还可以求3个小数的最大值
        int num1 = 10;
        int num2 = 5;

        double decimal1 = 3.14;
        double decimal2 = 2.718;
        double decimal3 = 1.618;

        int max2Value = max(num1, num2);
        System.out.println("两个整数的最大值：" + max2Value);

        double max3Value = max(decimal1, decimal2, decimal3);
        System.out.println("三个小数的最大值：" + max3Value);
    }
    public static void main3(String[] args) {
        //在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
        //求和的重载
        int x=5;
        int y=10;
        double m=1.0;
        double n=2.0;
        double p=3.5;
        System.out.println(sum(x,y));
        System.out.println(sum(m,n,p));
    }

    public static void main2(String[] args) {
        //创建方法求两个数的最大值max2，随后再写一个求3个数的最大值的函数max3。
       //要求：在max3这个函数中，调用max2函数，来实现3个数的最大值计算
        int x=5;
        int y=8;
        int z=10;
        int ret1=max2(x,y);
        System.out.println(ret1);
        int ret2=max3(x,y,z);
        System.out.println(ret2);
    }
    public static void main1(String[] args) {
        //求一个整数，在内存当中存储时，二进制1的个数。
        int n=7;
        int ret1=getCount1(n);
        int ret2=getCount2(n);
        System.out.println(ret1);
        System.out.println(ret2);
    }
}*/

public class Test1 {
    public static void hanoi(int n, char A, char B, char C) {
        if (n == 1) {
            System.out.println("移动盘子 1 从 " + A + " 到 " + C);
            //A——>C
            return;
        }

        hanoi(n - 1, A, C, B);
        //将n-1个盘子 从A借助C放到B
        System.out.println("移动盘子 " + n + " 从 " + A + " 到 " + C);
        //
        hanoi(n - 1, B, A, C);
    }
    public static void main(String[] args) {
        int numberOfDisks = 3; // 盘子的数量
        char sourceRod = 'A'; // 起始柱子
        char auxiliaryRod = 'B'; // 辅助柱子
        char destinationRod = 'C'; // 目标柱子

        hanoi(numberOfDisks, sourceRod, auxiliaryRod, destinationRod);
    }
}
